/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* E.P. Scene Graph
* Developed by:
*       - Eduardo Ribeiro (eribeiro @ tecgraf . puc-rio . br)
*       - Peter Dam (peter @ tecgraf . puc-rio . br)
* File: Engine.h
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

#ifndef _EPSG_ENGINE_
#define _EPSG_ENGINE_

#include "EPSG/Prototypes.h"
#include <vector>

namespace EPSG
{
	class Engine
	{
	public:
		/* [CONSTRUCTOR] */	Engine();

		virtual bool		apply( unsigned char key, int x, int y ) { return false; }
		virtual bool		apply( int button, int state, int x, int y ) { return false; }
		virtual bool		apply( int x, int y ) { return false; }

		static bool			execute( unsigned char key, int x, int y );
		static bool			execute( int button, int state, int x, int y );
		static bool			execute( int x, int y );

	private:
		static std::vector<EPSG::Engine*>	s_engines;
	};
}

#endif //_EPSG_ENGINE_